$(document).ready(function(){
	initValidate();
	initDatePicker('.datepicker');
	initMask();
	initFlashMessage();
	$('.overTitle').tooltip();
	$('.overlay').popover();
	$(".dataTables_length select").select2();
	$(".select2").select2();
	$(".money").maskMoney({decimal:",",thousands:"."});
	$('.dropdown-toggle').dropdown();
	initRichEditor();
	
	//para não fazer cache do ajax na modal
	$('.modal').on('hidden', function() {
	    $(this).removeData('modal');
	});
	
	// Brazilian Portuguese 
	if ($.timeago)
	{
		$.timeago.settings.strings = {
				suffixAgo: "atrás",
				suffixFromNow: "nesse momento",
				seconds: "alguns segundos",
				minute: "há um minuto",
				minutes: "há %d minutos",
				hour: "há uma hora",
				hours: "há %d horas",
				day: "há um dia",
				days: "há %d dias",
				month: "há um mês",
				months: "há %d meses",
				year: "há um ano",
				years: "há %d anos"
			};
		$('.timeago').timeago();
	}
	
	var conteudo_principal = $('body');
	conteudo_principal.ajaxStart(function(){
		$('#divCarregando').fadeIn();
	}).ajaxStop(function(){
		$('#divCarregando').fadeOut();
	});
	
});

function initPagination()
{
	$('.pagination a').click(function(){
		if ($(this).hasClass('disabled'))
			return false;
		$.ajax({
			type: "POST",
			url: $(this).attr('href'),
			success: function(data){
				$('#divGrid').html(data);
			}
		});
		return false;
	});
}

function initModal()
{
	$('#myModal .modal-header').html('<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>');
	$('#myModal .modal-header').append($("#myModalHeader").html());
	$('#myModal .modal-footer').html($("#myModalFooter").html());
	$('#myModalHeader ,#myModalFooter').remove();
	initValidate();
}

function initValidate()
{	
	if ($.validator)
	{
		$.validator.setDefaults({
			highlight: function(input) {
				$(input).parents('.control-group').addClass("error");
			},
			unhighlight: function(input) {
				$(input).parents('.control-group').removeClass("error");
			},
			errorElement: ""
		});
		
		$.extend(jQuery.validator.messages, {
		    required: "",
		    remote: "Corrija este campo.",
		    email: "email inválido.",
		    url: "URL inválida.",
		    date: "Data inválida.",
		    dateISO: "Data inválida.",
		    number: "Número inválido.",
		    digits: "Número inválido.",
		    creditcard: "Numero de cartão inválido.",
		    equalTo: "Insira o mesmo valor novamente.",
		    accept: "Extensão inválida.",
		    maxlength: jQuery.validator.format("Insira no máximo {0} caracteres."),
		    minlength: jQuery.validator.format("Insira no mínimo {0} caracteres."),
		    rangelength: jQuery.validator.format("Insira entre {0} e {1} characteres."),
		    range: jQuery.validator.format("Insira um valor entre {0} e {1}."),
		    max: jQuery.validator.format("Insira um valor menor ou igual a {0}."),
		    min: jQuery.validator.format("Insira um valor maior ou igual a {0}.")
		});
		
		$.each($('form.validate'),function(key, form){
			$(form).validate();
		});
	}
}

function initMask()
{
	$('input.telefone').mask('(99)9999-9999?9').addClass('input-small');
	$('input.cep').mask('99.999-999').addClass('input-small');
	$('input.cnpj').mask('99.999.999/9999-99').addClass('input-medium');
	$('input.cpf').mask('999.999.999-99').addClass('input-medium');
	$('input.datepicker').mask('99/99/9999').addClass('input-small');
	//seta o foco no primeiro campo input da tela
	$('body').find(':input:not(:hidden,:button,:submit,.noFocus)').eq(0).focus();
}

function initDataTable(elemento)
{
	$(elemento).dataTable({
		"bDestroy": true,
		"bJQueryUI": true,
		"sPaginationType": "full_numbers",
		"oLanguage": {
			"sProcessing":   "Carregando",
			"sLengthMenu":   "Mostrar _MENU_ registros",
			"sZeroRecords":  "Não foram encontrados registros",
			"sInfo":         "_START_ até _END_ de _TOTAL_ registro(s)",
			"sInfoEmpty":    "0 até; 0 de 0",
			"sInfoFiltered": "(filtrado de _MAX_ registros no total)",
			"sInfoPostFix":  "",
			"sInfoThousands": ".",
			"sSearch":       "Pesquisar:",
			"oPaginate": {
				"sFirst":    "Primeiro",
				"sPrevious": "Anterior",
				"sNext":     "Seguinte",
				"sLast":     "Último"
			}
		}
	});
	
	//atribuindo os icones de seta para baixo/cima na ordenação
	$(elemento).find('th').on('click', function(){
		//removendo as classes dos demais elementos
		$(this).parent().find('th').removeClass('dataDescending').removeClass('dataAscending');
		$(this).parent().find('th[aria-sort="ascending"]').addClass('dataAscending');
		$(this).parent().find('th[aria-sort="descending"]').addClass('dataDescending');
	});
	
	$(elemento).find('th[aria-sort="ascending"]').addClass('dataAscending');
	$(elemento).find('th[aria-sort="descending"]').addClass('dataDescending');
}

function initRichEditor()
{
	
	$.each($('textarea.rich'), function(){
		$(this).tinymce({
			script_url : BASE_PATH+'public/js/tinymce/tinymce.min.js',
			language : 'pt_BR',
			menubar : false,
			statusbar : false,
		});
	});
	
	$.each($('textarea.simpleRich'), function(){
		$(this).tinymce({
			script_url : BASE_PATH+'public/js/tinymce/tinymce.min.js',
			language : 'pt_BR',
			toolbar1: "styleselect | bold italic | alignleft aligncenter alignright alignjustify | numlist bullist",
			menubar : false,
			statusbar : false,
		});
	});
	
	
	$('form.validate').on('submit',function() {
		if ($('form.validate').find('textarea.rich').length > 0 || $('form.validate').find('textarea.simpleRich').length > 0)
		{
			tinymce.triggerSave();
			if (!($('textarea.simpleRich').valid()))
				return false;
		}
	});

}

function initDatePicker(elemento)
{
	$(elemento).datepicker({
		minDate: 0,
		showOn: "button",
		buttonText: '',
		dateFormat: "dd/mm/yy"
	});
	$('button.ui-datepicker-trigger').addClass('icon-calendar add-on');
	initMask();
}